package com.jvyou.thread.d12waitandnotify;

/**
 * @author 橘柚
 * @version 1.0-SNAPSHOT
 * @Date 2024/7/31 14:24
 * @Description 消费者线程，用于消费食物
 */
public class Consumer extends Thread {

    @Override
    public void run() {
        while (true) {
            synchronized (Table.lock) {
                if (Table.count == 0) {
                    break;
                } else {
                    // 判断桌子上是否有食物
                    if (Table.food == 0) {
                        try {
                            // 没有食物要等待
                            System.out.println("桌子上面没有食物，等待厨师生产");
                            Table.lock.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    } else {
                        // 消费食物
                        // 将桌子上面的食物数量变为0
                        Table.food = 0;
                        Table.count--;
                        System.out.println("消费者消费了1个食物，剩余食物数量：" + Table.count);
                        // 通知厨师做菜
                        Table.lock.notify();
                    }
                }
            }
        }
    }
}
